home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
byteibm.arc
/
DAHMKE.ARC
/
MCDFIG8.FOR
< prev
Wrap
Text File
|
1985-07-12
|
2KB
|
115 lines
$STORAGE: 2
C
C
C Demonstration MS-FORTRAN program using assembler
C subroutine calls.
C
C by Mark Dahmke
C May, 1986
C
C This program displays the current directory path,
C then allows you to enter a new directory name.
C Next, it displays all filenames in the directory,
C and also shows the amount of free disk space remaining.
C
C
CHARACTER*65 PATH
CHARACTER*11 FSPEC
CHARACTER*11 FNAME
CHARACTER*1 ZERO
INTEGER IDRIVE,ICODE
INTEGER*4 ISPACE
C
C
DATA PATH /' '/
DATA FSPEC /'???????????'/
DATA FNAME /' '/
C
ZERO = CHAR(0)
C
C GET PATH NAME:
C
C
IDRIVE = 0
C
CALL GETDIR(PATH,IDRIVE,ICODE)
C
IF (ICODE .NE. 0) THEN
WRITE(*,*) ' ERROR RETURN: ',ICODE
ENDIF
C
C --- CLEAR OUT THE ZERO BYTE BEFORE WRITING TO CONSOLE...
C
DO 4 I = 1, 65
IF (PATH(I:I) .EQ. ZERO) PATH(I:I) = ' '
4 CONTINUE
C
WRITE(*,*) ' Current Directory is: ',PATH
C
C
C ---- CHANGE DIRECTORY
C
PATH = ' '
5 WRITE(*,*) ' Enter name of directory: '
READ(*,6) PATH
6 FORMAT(A65)
C
C ---- SCAN PATH NAME TO FIND LAST CHARACTER.
C INSERT A ZERO BYTE AT THE END OF THE STRING.
C
I = 64
10 IF (PATH(I:I) .NE. ' ') GO TO 20
I = I - 1
IF (I .EQ. 0) GO TO 5
GO TO 10
20 I = I + 1
PATH(I:I) = ZERO
C
C
C
CALL CHDIR(PATH,ICODE)
C
IF (ICODE .NE. 0) THEN
WRITE(*,*) ' INVALID DIRECTORY NAME OR FORMAT '
ENDIF
C
C ---- DISPLAY FILE NAMES IN THE CURRENT DIRECTORY.
C
C
CALL SRCHF(IDRIVE,FSPEC,FNAME)
C
IF (FNAME(1:1) .EQ. '?') THEN
WRITE(*,*) ' NO FILES'
GO TO 100
ENDIF
C
WRITE(*,40) FNAME(1:8),FNAME(9:11)
40 FORMAT(1X,A8,'.',A3)
C
C ---- CONTINUE TO READ FILE NAMES
C
C
50 CALL SRCHN(IDRIVE,FSPEC,FNAME)
C
IF (FNAME(1:1) .EQ. '?') GO TO 100
C
WRITE(*,40) FNAME(1:8),FNAME(9:11)
GO TO 50
C
C
C ---- GET DISK FREE SPACE
C
C
100 CALL GETDFS(IDRIVE,IBYTES,ISECT,ICLUST)
C
ISPACE = IBYTES * ISECT * ICLUST
C
WRITE(*,60) IDRIVE,IBYTES,ISECT,ICLUST,ISPACE
60 FORMAT(' Drive ',I2,' has ',I6,' bytes per sector',/,
& 1X,I6,' sectors per cluster, and ',I8, ' free clusters.',//,
& ' Total free space in bytes = ',I12)
C
C
STOP
END